#测试 类的继承

#父类
class FooParent(object):
    def __init__(self):
        self.foo = 'I\'m the parent.'
        self.parent = 'parent'
        print ('Parent')
    
    def bar(self,message):
        print ("%s from Parent" % message)
    
    def test(self):
        print ('I\'m the parent.')
        print(self.foo)
        print(self.parent)

#子类
class FooChild(FooParent):
    def __init__(self):
        # super(FooChild,self) 首先找到 FooChild 的基类（就是类 FooParent），
        # 然后把类 FooChild 的对象转换为类 FooParent 的对象
        super(FooChild,self).__init__()    
        self.foo = 'I\'m the son.'
        print ('Child')
        
    def bar(self,message):
        super(FooChild, self).bar(message)
        print('Child bar fuction')
        print(self.foo)
    
    def test(self):
        print('Child test fuction')
        print(self.foo)

 
if __name__ == '__main__':
    
    #实例化子类对象
    fooChild = FooChild()

    #利用dir查看对象的属性和方法
    # for item in dir(fooChild):
    #     print(item)
    # print(fooChild.__dict__.items())
    
    # 调用子类方法
    # fooChild.test()

    # #调用子类方法打印helloworld
    # fooChild.bar('HelloWorld')

    # print('***')

    # FooParent.test(fooChild)    

    # super(FooChild,fooChild).test()
    # super(FooChild,fooChild).bar("hello")


   
#程序执行流程说明：

# 1、子类对象初始化：调用父类构造，创建成员变量，打印parent，
#    回到子类自身构造，打印child
# 2、调用子类test方法：打印子类成员变量


    